/**283 easy
 * 双指针，一遍历，一非零指尾
 */
/**
 *
 * @param {number[]} nums
 */
function removeZero(nums) {
  // splice push 涉及内存分配耗时
  // let count = 0;
  // for (let i = 0; i < nums.length - count; i++) {
  //   if (nums[i] === 0) {
  //     nums.splice(i--, 1);
  //     nums.push(0);
  //     count++;
  //   }
  // }
  // 好像也没快多少，但和题解一样
  // let j = 0;
  // for (let i = 0; i < nums.length; i++) {
  //   if (nums[i] !== 0) {
  //     nums[j++] = nums[i];
  //   }
  // }
  // nums.fill(0, j);
  // 题解提出的更快方法,通过交换省去fill
  let j = 0;
  for (let i = 0; i < nums.length; i++) {
    if (nums[i] !== 0) {
      let temp = nums[i];
      nums[i] = nums[j];
      nums[j++] = temp;
    }
  }
  return nums;
}
console.log(removeZero([0, 1, 0, 3, 12]));
console.log(removeZero([0, 0, 1]));
